home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 July / EnigmA AMIGA RUN 20 (1997)(G.R. Edizioni)(IT)[!][issue 1997-07 & 08][EAR-CD IV].iso / earcd / biz / dbase / db3_4src.lha / db3.4 / db.h < prev    next >
C/C++ Source or Header  |  1996-08-15  |  9KB  |  318 lines

  1. /* Headerfile for the db project */
  2.  
  3. #include <exec/lists.h>
  4. #include <dos.h>            /* FMSIZE and FNSIZE */
  5. #include <stdio.h>        /* FILE */
  6. #include <exec/nodes.h>
  7. #include <exec/lists.h>
  8. #include <exec/types.h>
  9. #include <libraries/locale.h>
  10. #include <proto/locale.h>
  11.  
  12. #define CATCOMP_NUMBERS
  13. #include "db_strings.h"
  14. #include "Select.h"
  15.  
  16. /**********************************************************************/
  17. /*                              Defines                               */
  18. /**********************************************************************/
  19.  
  20. #define TOGGLE_LED *(UBYTE *)0xbfe001 ^= 2
  21.  
  22. /* Locale */
  23. #define GetAppStr(index) (GetString(&LocaleInfo,(index)))
  24.  
  25. #define DSIZE 25
  26.  
  27.  
  28. #define TEXTFIELD_KIND 4711
  29.  
  30.  
  31. /* Rawkeycodes + 128 for upkey codes */
  32. #define RAW_TAB            (0x42)
  33. #define RAW_ESC            (0x45)
  34. #define RAW_HELP            (0x5f)
  35.  
  36. #define RAW_UP                (0x4c)    
  37. #define RAW_DOWN            (0x4d)    
  38. #define RAW_LEFT            (0x4f)
  39. #define RAW_RIGHT            (0x4e)
  40.  
  41. #define RAW_F1                (0x50)
  42. #define RAW_F10            (0x59)
  43.  
  44. #define VANILLA_DEL        (0x7f)
  45. #define VANILLA_ESC        (0x1b)
  46.  
  47. #define SEP_SPACE            (' ')
  48. #define SEP_TAB            ('\t')
  49.  
  50. /* Layout defines */
  51. #define DEFTABSIZE 6
  52. #define STRGADFRAMESWIDTH 14
  53. #define STRGADFRAMESHEIGHT 6
  54.  
  55.  
  56. #define LATER    NULL
  57.  
  58. #define MODE_NORMAL        0
  59. #define MODE_FIND            1
  60. #define MODE_SORT            2
  61. #define MODE_FILTER        3
  62.  
  63.  
  64. /* Limits */
  65. #define FIELDNAMELENGTH 50
  66. #define LAYOUTNAMELENGTH 50
  67. #define WINDOWTITLELENGTH 80
  68. #define DEFMAXFLDLEN 200
  69.  
  70. #define LOADBUFFERSIZE 65536    /* This restricts the recordlength */
  71.  
  72. #define NOTMODIFIED 0
  73. #define RECMODIFIED 1
  74. #define PROMODIFIED 2
  75.  
  76. /* For the ASL file requester */
  77. #define MYLEFTEDGE 50
  78. #define MYTOPEDGE  50
  79. #define MYWIDTH    300
  80. #define MYHEIGHT   300
  81.  
  82. /* Savemodes for Save() */
  83. #define SAVE_PRO 0
  84. #define SAVE_VIEW 1
  85. #define SAVE_VIEW_WN 2
  86. #define SAVE_TAB_ASCII 3
  87. #define SAVE_COMMA_ASCII 4
  88.  
  89. #define SORT_DIR_AZ 0
  90. #define SORT_DIR_ZA 1
  91.  
  92. /* Codes returned by LoadField */
  93. #define BUFSIZE_ERR 0
  94. #define FLD_OK 1
  95. #define REC_OK 2
  96. #define END_OF_FILE 3
  97.  
  98. /* Error codes from various functions */
  99. #define MEM_ERR -1
  100. #define RFF_ERR -2
  101. #define FILE_ERR -3
  102.  
  103. #define GAD_ERR -4
  104. #define WIN_ERR -5
  105. #define MENU_ERR -6
  106. #define WINSIZE_ERR -7
  107.  
  108. enum arguments { FILES, DEVICE, UNIT, DIALPREFIX, DIALPOSTFIX, AREACODE,
  109.  PUBSCREEN, FONTNAME, FONTSIZE, NOICONS, NOSPEEDRENDER, NORETURNSTEP, NOSERIAL,
  110.  HORIZBAR, ESCQUIT, TONEDIAL, TONEDIALSPEED, CCITT5, MAKEBACKUP, LOCALESORT,
  111.  HIGHLABEL, NOBORDER };
  112.  
  113. enum serialerrors { OK, MSGPORTERR, IOEXTERR, DEVICEERR };
  114.  
  115. typedef char loadreturncode;
  116.  
  117. /**********************************************************************/
  118. /*                              externs                               */
  119. /**********************************************************************/
  120.  
  121. extern char EmptyString[];
  122.  
  123. extern struct Pro *CurrentPro;
  124.  
  125. /* This is from the DataIcon.c file created by IconEdit */
  126. /* We will modify fields here before writing icons */
  127. extern struct DiskObject DataIcon;
  128.  
  129. extern LONG MyArgArray[];
  130.  
  131. extern struct MsgPort *AWPort;
  132. extern struct TextFont *UserTextFont;
  133. extern struct LocaleInfo LocaleInfo;
  134.  
  135. extern LONG WinSig;
  136.  
  137. extern struct Gadget *NextGad;    /* MyStrHook() sets this if tabcycling */
  138.  
  139. extern struct Library *RexxSysBase;
  140. extern struct Library *LocaleBase;
  141. extern struct Library *DiskfontBase;
  142. extern struct Library *IFFParseBase;
  143. extern struct Library *IconBase;
  144. extern struct Library *CxBase;
  145. extern struct Library *AslBase;
  146. extern struct GfxBase *GfxBase;
  147. extern struct IntuitionBase *IntuitionBase;
  148. extern struct Library *GadToolsBase;
  149. extern struct Library *UtilityBase;
  150. extern struct Library *WorkbenchBase;    /* For AppWindow */
  151.  
  152.  
  153. /**********************************************************************/
  154. /*                              structs                               */
  155. /**********************************************************************/
  156.  
  157. typedef char *Field;
  158.  
  159. struct Space {
  160.     UWORD XOffset;
  161.     UWORD YOffset;
  162.     WORD Width;
  163.     WORD Height;
  164. };
  165.  
  166. struct Rec {
  167.     struct Rec *Next;
  168.     struct Rec *Prev;
  169.     Field *Fields;
  170.     short FldSum;
  171. };
  172.  
  173. struct FldInfo {
  174.     struct FldInfo *Next;
  175.     struct MinList FldTags;
  176.     char Name[FIELDNAMELENGTH];
  177.     int Len; /* Max length of field (excluding '\0') */
  178.     char Type; /* String, Checkbox, Cycle.. */
  179. };
  180.     
  181. struct VisFldInfo {
  182.     struct VisFldInfo *Next;
  183.     struct MinList VisTags;
  184.     char Name[FIELDNAMELENGTH];
  185.     struct Gadget    *Gadget;            /* Corresponding gadget in window */
  186.     struct Space Pos;                    /* Gadget position */
  187.     struct IntuiText Label;            /* For textfield gadget */
  188.     short Offset;                        /* Field offset in database */
  189.     unsigned char VisLen; /* Visual length in chars */
  190.     char Format; /* Visual format: Caps, ALL CAPS... */
  191.     char FTyp;        /* Fieldtype */
  192.     int Code;        /* Active choice in cyclegadget so we don't use v39 func. */
  193.     char **CEnt;    /* Pointer to Cyclechoices */
  194.     char NEnt;        /* Number of entries in cyclegad */
  195.     char VisSep; /* Visual separator: Space, TAB or NewLine */    
  196. };
  197.  
  198. struct RxInfo {    /* Rexx menu item data */
  199.     struct RxInfo *Next;
  200.     struct MinList RxTags;
  201. /*    char Name[FIELDNAMELENGTH]; */
  202. };
  203.  
  204. struct SR {
  205.     struct SR *Next;
  206.     APTR GadgetRender;
  207. };
  208.  
  209. /*
  210.  * Layout is the internal name for a View in db. (The name "View"is used by the OS)
  211.  */
  212.  
  213. struct Layout {
  214.     struct Layout *NextLayout;
  215.     struct MinList LayTags;
  216.     char Name[LAYOUTNAMELENGTH];
  217.     char Title[WINDOWTITLELENGTH]; /* WindowTitle */
  218.     struct Window *Window;
  219.     WORD XPos, YPos;
  220.     struct AppWindow *AppWin;
  221.     struct Gadget *GList;
  222.     struct Gadget *DragGad;
  223.     Select *Browser;
  224.     struct SR *FirstSR;    /* SpeedRender struct that holds gadget borders */
  225.     struct VisFldInfo *FirstVisFldInfo;
  226.     struct VisFldInfo *FirstUndoVisFldInfo;
  227.     BOOL ComplexGadgets;
  228. };
  229.  
  230. struct SoftMenu {
  231.     struct MenuItem *Items;        /* The variable menuitems */
  232.     struct NewMenu *NewItems;    /* Stores NewMenu structs for Items */
  233.     int NewItemsNum;                /* For deallocation */
  234. };
  235.  
  236. struct Pro {
  237.     struct Pro *NextPro;
  238.     struct MinList ProTags;
  239.     struct MinList UnknownLines;
  240.     char Name[FNSIZE];
  241.     char Drawer[FMSIZE];
  242.     char OutputName[FMSIZE];
  243.     char OutputDrawer[FMSIZE];
  244.     char ARexxName[FMSIZE];
  245.     char ARexxDrawer[FMSIZE];
  246.     struct Rec *FirstRec;
  247.     int RecSum;
  248.     struct Rec *CurrentRec;
  249.     int RecNum;
  250.     struct Rec *FindRec;
  251.     struct Rec *SortRec;
  252.     struct Rec **Recpp;    /* Points to either CurrentRec, FindRec or SortRec */
  253.     struct FldInfo *FirstFldInfo;
  254.     struct RxInfo *FirstRxInfo;    /* The rxmenu RFF line */
  255.     struct Layout *FirstLayout;
  256.     struct Layout *CurrentLayout;
  257.     struct Menu *Menu;                /* Same menustrip for the whole project */
  258.     struct SoftMenu ViewMenu;
  259.     struct SoftMenu ARexxMenu;
  260.     char Mode;
  261.     BOOL IsSorted;
  262.     char Sep;    /* Separator: ; , space or tab */
  263.     char Modified;    /* bit 0 = Record modified, bit 1 = project modified */
  264.  
  265.     BOOL Quiet;        /* Rexx stuff. Don't update GUI */
  266.     short CurrentFldOffset;        /* Rexx stuff */
  267. };
  268.  
  269. /**********************************************************************/
  270. /*                             functions                              */
  271. /**********************************************************************/
  272.  
  273. STRPTR __asm GetString(register __a0 struct LocaleInfo *li,
  274.                        register __d0 LONG stringNum);
  275.  
  276. int DoDial(char *phonenumber);
  277. int DB_CUT(void);
  278. int DB_COPY(void);
  279. int DB_PASTE(void);
  280. BOOL PasteFromClipboard(struct Pro *Pr, struct Rec *crp);
  281.  
  282. int ChangeView(struct Layout *lay);
  283.  
  284. void UpdateRecord(struct Pro *Pr);
  285. BOOL UpdateFld(struct Rec *crp, short offset, char *s);
  286. void UpdateWindow(struct Pro *Pr);
  287. void UpdateDragBar(struct Pro *Pr);
  288. void UpdateGadgets(struct Pro *Pr);
  289.  
  290. struct Rec *FindRecord(struct Pro *Pr, int StartRec, int Dir);
  291. void DoSort(struct Pro *Pr, short offset);
  292. BOOL JumpList(struct Pro *Pr, int delta);
  293.  
  294. char *ReadVisFld(struct Pro *Pr, struct VisFldInfo *vf);
  295. LONG EasyLocRequest(struct Window *w, struct EasyStruct *es, ULONG *idcmp,
  296.  APTR arg1, ...);
  297.  
  298. void SetProMode(struct Pro *Pr, char Mode);
  299. BOOL IsInputBlocked(void);
  300. BOOL BlockInput(struct Window *Win, BOOL Delay);
  301. void FreeInput(struct Window *Win);
  302. Field GetFld(struct Rec *crp, short Offset);
  303.  
  304. extern void ShowError(int errnum, char *text);
  305.  
  306. extern void RFFDelete(struct Pro *);
  307. extern struct RFFTag *FindTag(struct MinList *list, short int id);
  308. extern void DeleteTag(struct RFFTag *ot);
  309. extern void DeleteRFFLine(struct RFFLine *ol);
  310.  
  311. extern struct VisFldInfo *GetVisFldInfo(struct Layout *Lay, struct Gadget *g);
  312.  
  313. extern struct FldInfo *GetFldInfo(struct Pro *, short);
  314. extern BOOL SpeedRenderOn(struct Layout *Lay);
  315. extern void SpeedRenderOff(struct Layout *Lay);
  316. extern void ByeBye(void);
  317. extern struct Layout *NewLayout(struct Pro *Pr);
  318.